home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / daten / twistdemo / aminet / aminetftp.rexx < prev    next >
OS/2 REXX Batch file  |  1995-03-27  |  3KB  |  166 lines

  1. /**
  2.  * $Id$
  3.  *
  4.  *
  5.  * Aminet FTP file 
  6.  * Copyright © 1995 HiSoft. All Rights Reserved.
  7. **/
  8.  
  9. ADDLIB('rexxsupport.library',0,-30,0)
  10.  
  11. PASSES = 0
  12.  
  13. ADDRESS Twist
  14. PARSE ARG dbfilename,rela_x,rela_y,shiftkeys
  15. OPEN dbfilename
  16.  
  17. OPTIONS RESULTS
  18.  
  19. LOGNAME = "anonymous"
  20. FILESTOFTP = 'ENV:SortedAminetFTPGetList'
  21. LASTFTPSITE = ""
  22. Open(input,'RAM:FTP',W)
  23.  
  24. IF exists('ENV:HOST') = 1 then
  25.     DO
  26.         OPEN(input1, 'ENV:HOST', R)
  27.         HOSTNAME = '@' || READLN(input1)
  28.         CLOSE(input1)
  29.     END
  30.     
  31.     ELSE
  32.     
  33.     DO UNTIL VALID = 1
  34.  
  35.         SAY "AmiTCP ENV:HOST not found enter your host name e.g. @xyx.com"
  36.         PARSE PULL Hostname
  37.         IF Substr(Hostname,1,1) ~= "@" THEN
  38.         DO
  39.         SAY HOSTNAME "is an invalid hostname, must be like @xyz.com"
  40.         END
  41.         ELSE
  42.         DO
  43.         VALID = 1
  44.         END
  45.  
  46.     END
  47.  
  48. IF exists('ENV:LOGNAME') = 1 then
  49.     DO
  50.         OPEN(input2, 'ENV:LOGNAME', R)
  51.         FTPNAME = READLN(input2)
  52.         CLOSE(input2)
  53.     END
  54.     
  55.     ELSE
  56.     
  57.     DO 
  58.  
  59.     SAY "AmiTCP ENV:LOGNAME not found enter your log name e.g. myname"
  60.     PARSE PULL FTPNAME
  61.     
  62.     END
  63.  
  64.  
  65. IF EXISTS(FILESTOFTP) THEN
  66. DO
  67.     Open(ftpinput,FILESTOFTP)
  68.  
  69.         DO UNTIL EOF(ftpinput) = 1 
  70.             FTPENTRY = Readln(ftpinput)
  71.             PARSE VAR FTPENTRY '//' FTPSITE '/' PATHNAME
  72.             CALL READVARIABLES
  73.             IF FTPSITE != "" THEN DO
  74.             CALL FTPFILE
  75.             END
  76.         END
  77.  
  78.     Close(ftpinput)
  79.  
  80. END
  81.  
  82. VALID = 0
  83.  
  84.  
  85. CLOSE(input)
  86.  
  87. ADDRESS COMMAND 'run AmiTCP:bin/ftp >CON: <RAM:FTP -n -i -v ' || FIRSTFTPSITE
  88.  
  89. EXIT
  90.  
  91. /* This subroutine parses the filename and path variables out of the
  92. * the full pathname + filename string.
  93. */
  94. READVARIABLES:
  95.         DO i = 1 TO LENGTH(PATHNAME) BY 1
  96.         X = RIGHT(PATHNAME,i)
  97.         Z = SUBSTR(X,1,1)
  98.             IF Z = "/" THEN
  99.             DO
  100.             FILENAME = RIGHT(PATHNAME,i-1)
  101.             SITEPATH = '/' || LEFT(PATHNAME,LENGTH(PATHNAME)-i)
  102.             i = LENGTH(PATHNAME)
  103.             END
  104.         END
  105.  
  106.  
  107. /* This subroutine is used to pass the parameters to the pipe, 
  108. * it also examines the last site and decides whether a change of ftp site
  109. * was requested
  110. */
  111. FTPILE:
  112.  
  113. IF FTPSITE = "" THEN
  114. DO
  115.     Writeln(input,'close')
  116.     Writeln(input,'quit')
  117. END
  118.  
  119. ELSE
  120.  
  121. DO
  122.  
  123.     IF LASTFTPSITE = "" | LASTFTPSITE ~= FTPSITE THEN
  124.     
  125.     DO
  126.     
  127.         IF LASTFTPSITE = "" THEN
  128.  
  129.         DO
  130.  
  131.         END
  132.  
  133.         ELSE
  134.  
  135.         DO
  136.             Writeln(input,'close')
  137.         END
  138.  
  139.         IF PASSES = 0 THEN 
  140.         DO
  141.         FIRSTFTPSITE = FTPSITE
  142.         PASSES = 1
  143.         END
  144.         ELSE
  145.         DO
  146.         Writeln(input,'open ' || FTPSITE)
  147.         END
  148.         Writeln(input,'user ' || LOGNAME '' || FTPNAME || HOSTNAME)
  149.         Writeln(input,'bin')
  150.         Writeln(input,'cd ' || SITEPATH)
  151.         Writeln(input,'get ' || FILENAME)
  152.         LASTFTPSITE = FTPSITE
  153.  
  154.     END
  155.  
  156. ELSE
  157.  
  158.     DO
  159.  
  160.         Writeln(input,'cd ' || SITEPATH)
  161.         Writeln(input,'get ' || FILENAME)
  162.  
  163.     END
  164.  
  165. END
  166.